var jsonrpc = new JSONRpcClient("getJSON.html");
var objPedidoTemp = new Array();
var objPedido = new Array();
var objPedidoConf = new Array();
var objPedidoDelete = new Array();
var objPedidoReject = new Array();
var objPedidoAprove = new Array();
var editingAfterSave = false;
var fecAtenPediInput = '<div class="fondo_txtbox65"><input type="text" class="date fecAtenPedi" style="width:65px"/>';
var indPrioSelect = "<select style='width:100' class='indPrio'><option value=''>Seleccione</option></select>";
var montDenoInput = '<div class="fondo_txtbox65"><input type="text" style="width:65px" onchange="updateDeno(this)" maxlength="21" class="alphanumeric"/>';
var editButton = '<a href="#" class="edit" title="Editar" style="text-decoration: none"><span class="ui-icon ui-icon-pencil" style="display:inline;float:left"/></a>';
var saveButton = '<a href="#" class="save" title="Guardar" style="text-decoration: none"><span class="ui-icon ui-icon-disk" style="display:inline;float:left"/></a>';
var delButton = '<a href="#" class="del" title="Eliminar" style="text-decoration: none"><span class="ui-icon ui-icon-close" style="display:inline;float:left"/></a>';
var cancelButton = '<a href="#" class="cancel" title="Cancelar" style="text-decoration: none"><span class="ui-icon ui-icon-cancel" style="display:inline;float:left"/></a>';
var pedidoContainer = new Array();

function setHerramientas(){
  $("#prediccionTable tr td:last-child").each(function(i){    
      $(this).html(editButton);
  });
}

$(".alphanumeric").live("focus",function(event){
  $(this).numeric({allow:".,"});
});

$(".date").live("focus",function(event){
  $(this).datepicker();
});

$(".fecAtenPedi").live("change",function(event){
  $(this).removeClass("error");
  $(this).attr("title","");
  var idPedido = $(this).parents("tr:first").attr("idpedido");
  objPedidoTemp[idPedido].fecAtenPedi = $(this).attr("value");
});

$(".indPrio").live("change",function(event){
  $(this).removeClass("error");
  $(this).attr("title","");
  var idPedido = $(this).parents("tr:first").attr("idpedido");
  var horAtenInicPact = $(this).find("option:selected").attr("horateninicpact");
  var horFinlInicPact = $(this).find("option:selected").attr("horFinlInicPact");
  $(this).parents("tr:first").find(".horAtenInicPact").removeClass("error").attr("value",horAtenInicPact);
  $(this).parents("tr:first").find(".horFinlInicPact").removeClass("error").attr("value",horFinlInicPact);
  objPedidoTemp[idPedido].indPrio.codTipo = $(this).attr("value");  
  objPedidoTemp[idPedido].indPrio.desTipo = $(this).find("option:selected").text();
  objPedidoTemp[idPedido].horAtenInicPact = horAtenInicPact;  
  objPedidoTemp[idPedido].horFinlInicPact = horFinlInicPact;
});

$(".save").live("click",function(){
  $("#errorGrabarUnoDiv").html("");
  var row = $(this).parents("tr:first");
  var idPedido = row.attr("idpedido");
  pedidoContainer = {
    "pedidos":{
      "javaClass":"java.util.List",
      "list":[objPedidoTemp[idPedido]]
    }
  };  
  var response = jsonrpc.jsonService.modiPedidoAtmTemp(pedidoContainer);
  if(response.SResult==1){
    $("#errorGrabarUnoDiv").html("Se encontraron los siguientes errores: </br>").css("color","red");
    var countError = 0;
    $.each(response.camposResponse.list,function(key,value){      
      if(value.SResult==1){
        countError++;
        var separador = value.SCampo.indexOf("-");
        var classCampo = value.SCampo.substr(0,separador);
        var campoId = "."+classCampo;
        if(campoId!="."){
          $(campoId).attr('title',value.SMens);
          $(campoId).addClass("error");
        }
        $("#errorGrabarUnoDiv").append("<p style='text-indent:25px;height:7px'>"+value.SMens+"</p>");
      }
    });      
    return false;
  }
  else if(response.SResult==2){
    var alertMsg ="";
    $.each(response.camposResponse.list,function(key,value){      
      if(value.SResult==2){
        alertMsg+=value.SMens+"\n";
      }      
    });
    if(alert!="")
      alert(alertMsg);
  }else{
    $("#noErrorContainer p").html("El pedido fue actualizado correctamente");
    $("#noErrorContainer").show();
    $("#noErrorContainer").fadeOut(20000);
  }
  objPedido[idPedido] = deepCopy(objPedidoTemp[idPedido]);    
  getPreview(row);  
});

$(".cancel").live("click",function(){
  var row = $(this).parents("tr:first");
  var idPedido = row.attr("idpedido");  
  objPedidoTemp[idPedido] = deepCopy(objPedido[idPedido]);  
  getPreview(row);
});
$(".del").live("click",function(){
  var answer = confirm("Se procedera a eliminar el pedido seleccionado");
    if(!answer)
        return false;  
  var row = $(this).parents("tr:first");
  var tipDocuPedi = row.attr("tipdocupedi");
  var codSeriPedi = row.attr("codseripedi");
  var numPedi = row.attr("numpedi");
  pedidoContainer = {
    "pedidos":{
      "javaClass":"java.util.List",
      "list":[{
        "tipDocuPedi":tipDocuPedi,
        "codSeriPedi":codSeriPedi,
        "numPedi":numPedi,
        "javaClass":"pe.com.hermes.hermetic.negocio.managerimpl.pedido.atm.PedidoAtmInterManagerImpl"
        }]
    }
  };
  var pedidosResponse = jsonrpc.jsonService.elimPedidoAtmTemp(pedidoContainer);
  if(pedidosResponse.SResult==0){
    row.remove();
    setItemNumber();
    $("#noErrorContainer p").html("El pedido fue eliminado correctamente");
    $("#noErrorContainer").show();
    $("#noErrorContainer").fadeOut(20000);
  }else{
    alert("Lo sentimos, ocurrio un error al eliminar el pedido, por favor intentelo nuevamente");
  }
    
});
function createPedido(idPedido){
    crearObjPedidoTemp(idPedido);
    objPedidoTemp[idPedido].estado = "nuevo";
    addTableRow($("#pedidoTable"));
    var rowCount = $('#pedidoTable tr').length;
    var par = rowCount%2;
    var classTable = "even";
    if(par ==0)
      classTable = "odd";
    var row = $("#pedidoTable tr:last").attr("id","pedido"+idPedido);
    $("#pedidoTable tr:last").addClass(classTable).attr("idpedido",idPedido);
    $("#pedidoTable tr:last td:nth-child(1)").addClass("verdana10bazul").css("text-align","center");
    getEdition(row);
    $("#pedidoTable tr:last td:nth-child(10)").html(saveButton);
    setItemNumber();
}
function getPreview(row){
  var idPedido = row.attr("idpedido");
  row.find("td:nth-child(5)").html(objPedido[idPedido].fecAtenPedi);
  row.find("td:nth-child(6)").html(objPedido[idPedido].indPrio.desTipo);
  row.find("td:last-child").html(editButton+delButton);
  $(".montDeno",row).each(function(){
    var idDeno = $(this).attr("iddeno");
    $(this).html(new NumberFormat(objPedido[idPedido].denosDetaPedido.list[idDeno].montDeno).toFormatted ());
  });
  $(".subTotal",row).each(function(){
      var tipUnidMone = $(this).attr("unidmone");
      var subTotal  = getSubTotalByTipUnidMoneAndTipMone(idPedido,tipUnidMone,1);
      $(this).html(subTotal);
  });
}
function getEdition(row){
  var codPunt = row.attr("codpunt");
  var codSucuHtb = row.attr("codsucuhtb");
  var fecProcAper = row.find("td:nth-child(4)").html();
  var fecAtenPedi = row.find("td:nth-child(5)").html();
  var indPrio = row.attr("indprio");  
  row.find("td:nth-child(5)").html(fecAtenPediInput).find("input").attr("value",fecAtenPedi);
  row.find("td:nth-child(6)").html(indPrioSelect).find("select").html(getIndPrioSelect(codSucuHtb,codPunt,fecAtenPedi)).attr("value",indPrio);
  var listDenoySaldos = jsonrpc.jsonService.getListDenoYSaldAtm(codSucuHtb,0,fecProcAper,codPunt,4);  
  row.find(".montDeno").each(function(){
    var montDeno = $(this).html();
    var tipUnidMone =  $(this).attr("tipUnidMone");
    var tipMone = $(this).attr("tipMone");
    var codDeno = $(this).attr("codDeno");
    var classStyle = "d"+tipUnidMone+tipMone+tipMone+codDeno;
    $(this).html(montDenoInput).find("input").attr("value",montDeno).addClass(classStyle);
    var listDenoYsaldosLength = listDenoySaldos.length; 
    for(i=0;i<listDenoYsaldosLength;i++){
      if(listDenoySaldos[i].numDisp==$(this).attr("numdisp")&&!listDenoySaldos[i].indActi)
      $(this).find("input").attr("disabled","disabled");
    }
  });  
  row.find("td:last-child").html(saveButton+cancelButton);
}

function getSucuSelect(){
  var listSucu = jsonrpc.jsonService.getListSucuAll("");
  var options = "";
  var listLength = listSucu.length;
  for (var i = 0; i < listLength; i++) {
      options += '<option value="' + listSucu[i].codSucursal + '">' + listSucu[i].desSucursal+'</option>';
  }
  return options;
}
function getIndPrioSelect(codSucuHtb,codPunt,fecAtenPedi){
  var listPrio = jsonrpc.jsonService.getListPrioAtm(codSucuHtb,codPunt,fecAtenPedi);
  var options = "";    
  var listLength = listPrio.length;
  options = '<option value="" horAtenInicPact="" horFinlInicPact="">Seleccione</option>';
  for (var i = 0; i < listLength; i++) {
      options += '<option value="' + listPrio[i].codigo + '" horAtenInicPact="'+listPrio[i].descripcion2+'" horFinlInicPact="'+listPrio[i].descripcion3+'">' + listPrio[i].descripcion+'</option>';
  }
  return options;
}

function getListDenoySaldos(idPedido){    
    $("#denosTable tbody").html("");
    //pintarObjTemp(idPedido);
    var tableId = "#denosTable";    
    var listLength = 0;    
    var listDenoySaldos = jsonrpc.jsonService.getListDenoYSaldAtm(objPedidoTemp[idPedido].sucuHtb.codSucuHtb,objPedidoTemp[idPedido].cuentaOrig.codCnta,objPedidoTemp[idPedido].fecProcAper,objPedidoTemp[idPedido].punt.codPunt,4);
    listLength = listDenoySaldos.length;
    if(listLength==0){
      alert("No existen dispensadores configurados para este Punto ATM. Por favor comunicarse con contraloria");
      return false;
    }
    $("#subTotalSolDiv").html("<span class='verdana10bazul'>0.00");
    $("#subTotalDolDiv").html("<span class='verdana10bazul'>0.00");
    $("#denosTable").show();
    $(".subTotalTable").show();
    var disabled = "";
    for(var i = 0;i < listLength;i++){        
        var par = i%2;
        var classTable = "even";
        if(par ==0)
            classTable = "odd";
        var $imgSrc = 'images/denominaciones/D'+listDenoySaldos[i].tipUnidMone+listDenoySaldos[i].tipMone+listDenoySaldos[i].tipMone+listDenoySaldos[i].codDeno+'.JPG'
        var idDeno ="d"+listDenoySaldos[i].tipUnidMone+listDenoySaldos[i].tipMone+listDenoySaldos[i].tipMone+listDenoySaldos[i].codDeno;
        if(!listDenoySaldos[i].indActi)
          disabled = "disabled";
          else
        disabled = "";
        
        objPedidoTemp[idPedido].denosDetaPedido.list[i] = {
          "javaClass":"pe.com.hermes.unidadesnegocio.procesamiento.entities.PedidoDenoEntity",
          "unidMone":{
                    "codTipo":listDenoySaldos[i].tipUnidMone,
                    "desTipo":listDenoySaldos[i].desTipUnidMone
                    },
          "tipMone": {
                    "codTipo":listDenoySaldos[i].tipMone,
                    "desTipo":listDenoySaldos[i].desTipMone
                  },
          "dispensador":{
                  "numDisp":listDenoySaldos[i].numDisp,
                  "deno":{
                          "codDeno":listDenoySaldos[i].codDeno,
                          "canValoNomi":listDenoySaldos[i].canValoNomi
                        }
                  },
          "deno":{
                  "codDeno":listDenoySaldos[i].codDeno,
                  "canValoNomi":listDenoySaldos[i].canValoNomi
                },
          "montDeno": 0
        };      
        
        $(tableId).find('tbody')
        .append($('<tr align="center" class="'+classTable+'" iddeno='+i+' name='+i+' idpedido='+idPedido+' canValoNomi='+listDenoySaldos[i].canValoNomi+' tipUnidMone='+listDenoySaldos[i].tipUnidMone+'>')
            .append($('<td class="verdana10bazul" align="center">')                
                .append(listDenoySaldos[i].numDisp)
            )
            .append($('<td class="verdana10bazul" width="40" align="center">')
                .append(listDenoySaldos[i].canValoNomi)
            )
            .append($('<td>')
                .append('<img src="'+$imgSrc+'" width="56" height="30"/>')
            )
            .append($('<td class="verdana10bazul" align="right">')
                .append(listDenoySaldos[i].desTipUnidMone)
            )
            .append($('<td class="verdana10bazul" align="right">')
                .append(listDenoySaldos[i].saldo)
            )            
            .append($('<td>')
                .append('<div class="fondo_txtbox90" canValoNomi="'+listDenoySaldos[i].canValoNomi+'"><input type="text"  maxlength="21" class="alphanumeric" id="'+getId(idDeno,idPedido)+'" name="'+getId(idDeno,idPedido)+'" '+disabled+' value="'+getValueDeno(objPedidoTemp[idPedido][idDeno])+'" style="width:90px" onchange="updateDeno(this)"/>')
            )
        );
    }    
}
function updateSaldosByDeno(){    
  var listLength = 0;
  var tableId = "#denosTable";
  var idPedido = $(tableId).find("tr:last").attr("idpedido");  
  var listDenoySaldos = new Array();
  if(!idPedido)
    return false;
  listDenoySaldos = jsonrpc.jsonService.getListDenoYSaldAtm(objPedidoTemp[idPedido].sucuHtb.codSucuHtb,objPedidoTemp[idPedido].cuentaOrig.codCnta,objPedidoTemp[idPedido].fecProcAper,objPedidoTemp[idPedido].punt.codPunt,4);
  listLength = listDenoySaldos.length;  
  if(listLength==0){
    alert("No existen dispensadores configurados para este Punto ATM. Por favor comunicarse con contraloria");
    return false;
  }
  for(var i = 0;i < listLength;i++){ 
    var idDeno ="d"+listDenoySaldos[i].tipUnidMone+listDenoySaldos[i].tipMone+listDenoySaldos[i].tipMone+listDenoySaldos[i].codDeno;
    $("#"+idDeno+"-"+idPedido).parents("td:first").prev().html(listDenoySaldos[i].saldo);//.css("border","solid red");//html(listDenoySaldos[i].saldo);
  }  
}

function showErrorMessages(pedidosResponse){
    var pedidosResponseLength = pedidosResponse.pedidosResponse.list.length;
    var pedidosResponseList =     pedidosResponse.pedidosResponse.list;    
    $("#errorGrabarDiv").html("");
    $("#codigoDiario").attr("value","");
    $("#errorContainer").show();
    for(var i=0;i<pedidosResponseLength;i++){
        var camposResponseList = pedidosResponseList[i].camposResponse.list;
        var camposResponseLength = camposResponseList.length; 
        var item;
        for(var j=0;j<camposResponseLength;j++){
            if(camposResponseList[j].SResult==1){
                item = "#pedido"+pedidosResponseList[i].idPedido+" td:first-child";
                $("#errorGrabarDiv").append("Item "+$(item).text()+": "+camposResponseList[j].SMens+"</"+"br>");
            }
        }        
    }
}
function showErrorMessagesPrincipal(pedidosResponse,div){
    var pedidosResponseLength = pedidosResponse.pedidosResponse.list.length;
    var pedidosResponseList =     pedidosResponse.pedidosResponse.list;    
    div.html("");
    $("#codigoDiario").attr("value","");
    $("#errorContainer2").show();
    for(var i=0;i<pedidosResponseLength;i++){
        var camposResponseList = pedidosResponseList[i].camposResponse.list;
        var camposResponseLength = camposResponseList.length; 
        var item;
        var tipDocuPedi = pedidosResponseList[i].tipDocu;
        var codSeriPedi = pedidosResponseList[i].codSeriPedi;
        var numPedi = pedidosResponseList[i].numPedi;
        var sResult = pedidosResponseList[i].SResult;        
        for(var j=0;j<camposResponseLength;j++){
            if(camposResponseList[j].SResult==1){
                $("#prediccionTable tbody tr").each(function(){
                  var _tipDocuPedi = $(this).attr("tipdocupedi");
                  var _codSeriPedi = $(this).attr("codseripedi");
                  var _numPedi = $(this).attr("numpedi");
                  item = $(this).find("td:first");
                  if(tipDocuPedi==_tipDocuPedi&&codSeriPedi==_codSeriPedi&&numPedi==_numPedi&&sResult==1){
                    $(this).css("border","solid red");
                    $(this).attr("title",$(this).attr("title")+" "+camposResponseList[j].SMens);
                    div.append("Item "+$(item).text()+": "+camposResponseList[j].SMens+"</"+"br>");
                  }
                });
            }
        }        
    }
}
function showSustentoPedidos(pedidosResponse){
    var pedidosResponseLength = pedidosResponse.pedidosResponse.list.length;
    var pedidosResponseList =     pedidosResponse.pedidosResponse.list;    
    $("#errorContainer").hide();
    for(var i=0;i<pedidosResponseLength;i++){        
        var idPedido = pedidosResponseList[i].idPedido;
        var par = i%2;
        var classTable = "even";
        if(par ==0)
            classTable = "odd";
        $("#tableSustento").find("tbody")
        .append($('<tr align="center" class="'+classTable+' verdana10bazul">')
            .append($('<td>')
                .append(pedidosResponseList[i].codSeriPedi)
            )
            .append($('<td>')
                .append(pedidosResponseList[i].numPedi)
            )
            .append($('<td>')
                .append(objPedido[idPedido].punt.desPunt)
            )
            .append($('<td>')
                .append(objPedido[idPedido].cuentaOrig.desCnta)
            )
            .append($('<td>')
                .append(objPedido[idPedido].indPrio.desTipo)
            )
            .append($('<td>')
                .append(objPedido[idPedido].montTotSol)
            )
            .append($('<td>')
                .append(objPedido[idPedido].montTotDol)
            )
            .append($('<td>')
                .append(objPedido[idPedido].fecAtenPedi)
            )
            /*.append($('<td>')
                .append(pedidosBean[i].desSucuHtb)
            )*/
        );
    }
    $(".afterSave").show();
    objPedidoTemp = new Array();
    objPedido = new Array();                             
    $("#pedidoTable").find('tbody').html("");
    createPedido(0);
    $("#codigoDiario").attr("value","");
}    
function setItemNumber(){
  $("#prediccionTable tbody tr td:first-child").each(function(i){
      var row = $(this).parents("tr.pedidoPrediccion:first");
      //row.css("border","solid red");
      row.prevAll().css("border","solid red");
      rowIndex = row.prevAll().length+1;
      console.log(rowIndex);
      /*
      rowIndex = row.prevAll().length+1;
      $(this).html(rowIndex);
      */
  });
}

function getValueDeno(monto){    
    newMont = '';
    if(monto){
        if (monto > 0)
            newMont = new NumberFormat(monto).toFormatted();
    }        
    return newMont;
}
function getId(property,idPedido){
    return property+"-"+idPedido;
}
function getIdPedido(id){    
    var x = id.indexOf("-")+1;
    var y = id.length;    
    var idPedido = id.substring(x,y);    
    return idPedido;    
}
function getProperty(id){    
    if(id=="codCntaOrig"||id=="codigoDiario")
        return id;
    var x = id.indexOf("-");
    var y = id.length;
    var property = id.substring(0,x);
    return property;    
}
function updateDeno(deno){
    var idPedido = $(deno).parents("tr:first").attr("idpedido");
    var row = $(deno).parents("tr:first");
    var idDeno = $(deno).parents("td:first").attr("iddeno");
    var canValoNomi = $(deno).parents("td:first").attr("canvalonomi");
    var montDeno = deno.value;
    $(deno).removeClass("error");
    $(deno).attr("title","");    
    var montoIngresado = new NumberFormat(montDeno).toUnformatted ();
    var decimal = montoIngresado.toString().indexOf(".");
    var montoIngresadoInt = Math.round(montoIngresado*100);
    var $canValoNomiInt =  Math.round(parseFloat(canValoNomi)*100);
    var result = montoIngresadoInt%$canValoNomiInt;
    if(decimal>0&&(decimal+3 < montoIngresado.toString().length)){
        objPedidoTemp[idPedido].denosDetaPedido.list[idDeno].erro = "1";
        showDenoErrors("asd",montoIngresado,canValoNomi);
        setTimeout(function () { $(deno).focus() }, 50); 
        $(deno).select()
        return false;
    }
    if(montoIngresado>0&&result !=0){
        objPedidoTemp[idPedido].denosDetaPedido.list[idDeno].erro = "1";
        showDenoErrors("asd",montoIngresado,canValoNomi);
        setTimeout(function () { $(deno).focus() }, 50); 
        $(deno).select()
        return false;
    }else{
        objPedidoTemp[idPedido].denosDetaPedido.list[idDeno].erro = 0;
        objPedidoTemp[idPedido].denosDetaPedido.list[idDeno].montDeno = montoIngresado;
        if(montoIngresado>0)
            $(deno).attr("value",new NumberFormat(objPedidoTemp[idPedido].denosDetaPedido.list[idDeno].montDeno).toFormatted());
        $("#denoErrors").html("");
        $(".subTotal",row).each(function(){
            var tipUnidMone = $(this).attr("unidmone");
            var subTotal  = getSubTotalByTipUnidMoneAndTipMone(idPedido,tipUnidMone,1);
            $(this).html(subTotal);
        });
    }
}
function focusDeno(deno){
    var $id = deno.id;        
    var $property = getProperty($id);
    var $idPedido;
    if($property=="codCntaOrig"){
        $idPedido = getIdPedidoInUse();
    }
    else{
        $idPedido = getIdPedido($id);
    }
    existErrorInDeno($idPedido);
}
function showDenoErrors(idDenoErro,montoIngresado,canValoNomi){
    $("#denoErrors").html('<div id="'+idDenoErro+'"><span style="color:red;font-weight:bold">Monto ingresado: '+montoIngresado+' es invalido para la denominacion: '+canValoNomi);   
}
function getIdPedidoInUse(){
    var idPedidoEstadoEditando;
    var pedidoLength = 0;
    $.each(objPedidoTemp,function(index){
        pedidoLength++;
    });
    for(var i = 0; i < pedidoLength; i++){                    
        if(objPedidoTemp[i].estado=="editando"){
            idPedidoEstadoEditando= i;
            return i;
        }
    }     
    return idPedidoEstadoEditando;
}
function getLastIdPedido(){
    var idLastPedido;
    var pedidoLength = 0;
    $.each(objPedidoTemp,function(index){
        if(objPedidoTemp[index])
            pedidoLength++;
    });
    return pedidoLength;
}
function existErrorInDeno(idPedido){    
    var denoKey;
    var exist = false;
    $.each(objPedidoTemp[idPedido], function(key, value) {
      if(key.match(/erro$/)){
        if (value == "1"){
            var idDenoErro = key;
            var x = idDenoErro.indexOf("*");
            idDeno = key.substring(0,x)+"-"+idPedido;
            $("#"+idDeno).focus();
            exist = true;
            return exist;
        }
      }
    });
    return exist;
}
function cursor_wait() {
      document.body.style.cursor = 'wait';
    }
function getSubTotalByTipUnidMoneAndTipMone(idPedido,tipUnidMone, tipMone){
    var subTotalByTipUnidMoneAndTipMone = 0;
    var denosDetaPedido = objPedidoTemp[idPedido].denosDetaPedido.list;
    $.each(objPedidoTemp[idPedido].denosDetaPedido.list, function(key, value) {  
      if(objPedidoTemp[idPedido].denosDetaPedido.list[key].unidMone.codTipo==tipUnidMone){
        subTotalByTipUnidMoneAndTipMone = subTotalByTipUnidMoneAndTipMone + new NumberFormat(objPedidoTemp[idPedido].denosDetaPedido.list[key].montDeno).toUnformatted ();
      }
    });
    subTotalByTipUnidMoneAndTipMoneFormatted = new NumberFormat(subTotalByTipUnidMoneAndTipMone).toFormatted();
    var sumArray = new Array();
    sumArray[0]=subTotalByTipUnidMoneAndTipMoneFormatted;
    sumArray[1]=subTotalByTipUnidMoneAndTipMone;  
    return subTotalByTipUnidMoneAndTipMoneFormatted;
}
function startsWith(str, prefix) {
    return str.indexOf(prefix) === 0;
}
function endsWith(str, suffix) {
    return str.match(suffix+"$")==suffix;
}

function isInt(n) {
   return typeof n == 'number' && n % 1 == 0;
}
function existOption($id,$value){    
    //pintar("id: "+$id+" ,valor: "+$value);
    var exists = false;
    $($id+' option').each(function(){
        if (this.value == $value) {                        
            exists = true;
        }
    });
    return exists;
}
function addCommas(nStr){
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}
function show_loading(){  
    var loadingAnim = document.getElementById('pub_loading');  
    loadingAnim.innerHTML = '<img src="imagenes/LogoProcesandoRight.gif" width=' + xx_r + 'height=' + yy_r + 'alt="Loading" />';  
    loadingAnim.style.display = 'block';      
    }
function crearObjPedidoTemp(id) {
    return objPedidoTemp[id] = { codSeriPedi: "",
                                 tipDocuPedi: "",
                                 numPedi: 0,                                 
                                 fecAtenPedi:"",
                                 horAtenInicPact:"",
                                 horFinlInicPact:"",
                                 indPrio:{
                                    codTipo:"",
                                    desTipo:""
                                 },                             
                                 montTotMone:0,
                                 montTotBill:0,
                                 montTotSol:0,
                                 montTotDol:0,
                                 denosDetaPedido:{
                                              "javaClass":"java.util.List",
                                              "list":[]
                                              },                                                                
                                 javaClass:"pe.com.hermes.hermetic.negocio.managerimpl.pedido.atm.PedidoAtmInterManagerImpl"
                                 }
}
function openWindow(accion){
    winwidth='450';
    winheight='920';
    window.open('about:blank', 'window1', 'location=0,directories=0,status=0,scrollbars=1,resizable=1,width='+winwidth+',height='+winheight);    
    var target = 'window1';
    document.forms[0].accion.value = accion;
    document.forms[0].target = target;
    document.forms[0].submit();
} 
function cleanPropertiesNumber(properties,idPedido){
    $.each(objPedidoTemp[idPedido],function(key, value){
       $.each(properties,function(index){
            if(properties[index]==key){
                objPedidoTemp[idPedido][key]=0;
                $("#"+key+"-"+idPedido).attr("value","");
            }
        }); 
    });
}
function cleanPropertiesStr(properties,idPedido){
    $.each(objPedidoTemp[idPedido],function(key, value){
       $.each(properties,function(index){
            if(properties[index]==key){
                objPedidoTemp[idPedido][key]="";
                $("#"+key+"-"+idPedido).attr("value","");
            }
        }); 
    });
}
function pintar(text){
    console.log("Texto: "+text);
}
function pintarSeguido(text){
    console.log("Texto: "+text);
}
function pintarObj(){
    var pedidoLength = 0;
    $.each(objPedidoTemp,function(index){
        pedidoLength++;
        if(objPedidoTemp[index].estado=="editando"){
            pintarSeguido("editando: "+index);
        }
        if(objPedidoTemp[index].estado=="guardado"){
            pintarSeguido("guardado: "+index);
        }
        if(objPedidoTemp[index].estado=="eliminado"){
            pintarSeguido("eliminado: "+index);
        }  
    });
    pintarSeguido("pedidoLength: "+pedidoLength);
}
function pintarObjTemp(idPedido){
    var line = "";
    $.each(objPedidoTemp[idPedido], function(key, value) {       
      console.log("key: "+key+" value: "+value);
    });
}
function cloneArray(obj1) {
    var obj2 = new Array();
    //console.log("obj1: "+obj1);
    $.each(obj1, function(key, value) {
      //console.log("key: "+key+", value"+value);
      obj2[key] = value;
    });
    return obj2;
}
function cloneObject(source) {
    for (i in source) {
        if (typeof source[i] == 'source') {
            this[i] = new cloneObject(source[i]);
        }
        else{            
            this[i] = source[i];
	}
    }
}
function restoreObjPeditoTemp(idPedido,obj1){
    $.each(obj1, function(key, value) {       
      objPedidoTemp[idPedido][key] = value;
    });
}
function hasSavedPedidos(){        
    var pedidoLength = 0;
    $.each(objPedido,function(index){
        pedidoLength++;
    });
    for(var i = 0; i < pedidoLength; i++){
        if(objPedido[i].estado=="guardado"){
            return true;
        }
    }
    return false;
}
function isEditingPedido(){        
    var pedidoLength = 0;
    $.each(objPedidoTemp,function(index){
        pedidoLength++;
    });
    for(var i = 0; i < pedidoLength; i++){
        if(objPedidoTemp[i].estado=="editando"){
            return true;
        }
    }
    return false;
}
function deepCopy(obj) {
    if (typeof obj !== "object") return obj;
    if (obj.constructor === RegExp) return obj;

    var retVal = new obj.constructor();
    for (var key in obj) {
        if (!obj.hasOwnProperty(key)) continue;
        retVal[key] = deepCopy(obj[key]);
    }
    return retVal;
}